#include "client.h"
#include "reseau/synchro_client.h"
#include "temps/cycle.h"

extern const char connexion_interrompue[] = "Connexion interrompue";

client::client(std::string adresse) throw(erreur) : lbl_pbs_connexion_("Connexion en cours...", false, 80, 58), qwerty_(false), client_(adresse), switch_ac_("switch_ac.png", 8, 232), cueilleur_(qwerty_), protocole_sync_(client_), pos_sw_ac_(*this), btn_ac_(switch_ac_, pos_sw_ac_), e1_(lbl_pbs_connexion_, "Synchronisation avec le serveur..."), e2_(lbl_pbs_connexion_, " "), img_annuler_("annuler.png", 189, 77), btn_annuler_(img_annuler_), clavier_azerty_("clavier-azerty.png"), clavier_qwerty_("clavier-qwerty.png", 0, 0, false) {
	// À ce stade, on est connecté et le protocole de synchronisation a été exécuté
	if(protocole_sync_.sante_connexion() < 0.05f)
		throw une_erreur<connexion_interrompue>();
	 
	int nbcycles = 1;
	while(!module_interface::instance().doit_quitter() && !btn_annuler_()) {
		cycle<2> c;
		module_interface::instance().traiter_evenements();
		if(nbcycles == 0) {
			instantane_du_piano i = cueilleur_.vider_panier();
			client_.emetteur().envoyer_udp(i);
			module_interface::instance().actualiser_affichage();
		}
		// 4 notes en même temps au maximum
		nbcycles = (nbcycles + 1) % 4;
	}
}

void client::switch_ac() {
	qwerty_ = !qwerty_;
	
	switch_ac_.x(qwerty_?23:8);
	
	clavier_qwerty_.visible(qwerty_);
	clavier_azerty_.visible(!qwerty_);
}
